package com.cwnu.lease.common.result;

import lombok.Getter;

/**
 * 统一返回结果状态信息类
 * @author Jisam
 */
@Getter
public enum ResultCodeEnum {

    /**
     * 请求成功
     */
    SUCCESS(200, "成功"),
    /**
     * 请求失败
     */
    FAIL(201, "失败"),
    /**
     * 参数错误
     */
    PARAM_ERROR(202, "参数不正确"),
    /**
     * 服务异常
     */
    SERVICE_ERROR(203, "服务异常"),
    /**
     * 数据异常
     */
    DATA_ERROR(204, "数据异常"),
    /**
     * 非法请求
     */
    ILLEGAL_REQUEST(205, "非法请求"),
    /**
     * 重复提交
     */
    REPEAT_SUBMIT(206, "重复提交"),
    /**
     * 请先删除子集
     */
    DELETE_ERROR(207, "请先删除子集"),

    /**
     * 账号已存在
     */
    ADMIN_ACCOUNT_EXIST_ERROR(301, "账号已存在"),
    /**
     * 验证码错误
     */
    ADMIN_CAPTCHA_CODE_ERROR(302, "验证码错误"),
    /**
     * 验证码已过期
     */
    ADMIN_CAPTCHA_CODE_EXPIRED(303, "验证码已过期"),
    /**
     * 未输入验证码
     */
    ADMIN_CAPTCHA_CODE_NOT_FOUND(304, "未输入验证码"),



    ADMIN_APARTMENT_DELETE_ERROR(444,"无法删除，请先删除前置条件"),


    /**
     * 未登陆
     */
    ADMIN_LOGIN_AUTH(305, "未登陆"),
    /**
     * 账号不存在
     */
    ADMIN_ACCOUNT_NOT_EXIST_ERROR(306, "账号不存在"),
    /**
     * 用户名或密码错误
     */
    ADMIN_ACCOUNT_ERROR(307, "用户名或密码错误"),
    /**
     * 该用户已被禁用
     */
    ADMIN_ACCOUNT_DISABLED_ERROR(308, "该用户已被禁用"),
    /**
     * 无访问权限
     */
    ADMIN_ACCESS_FORBIDDEN(309, "无访问权限"),

    /**
     * 未登陆
     */
    APP_LOGIN_AUTH(501, "未登陆"),
    /**
     * 手机号码为空
     */
    APP_LOGIN_PHONE_EMPTY(502, "手机号码为空"),
    /**
     * 验证码为空
     */
    APP_LOGIN_CODE_EMPTY(503, "验证码为空"),
    /**
     * 验证法发送过于频繁
     */
    APP_SEND_SMS_TOO_OFTEN(504, "验证法发送过于频繁"),
    /**
     * 验证码已过期
     */
    APP_LOGIN_CODE_EXPIRED(505, "验证码已过期"),
    /**
     * 验证码错误
     */
    APP_LOGIN_CODE_ERROR(506, "验证码错误"),
    /**
     * 该用户已被禁用
     */
    APP_ACCOUNT_DISABLED_ERROR(507, "该用户已被禁用"),


    /**
     * token过期
     */
    TOKEN_EXPIRED(601, "token过期"),
    /**
     * token非法
     */
    TOKEN_INVALID(602, "token非法");

    /**
     * 结果码的数字值
     */
    private final Integer code;

    /**
     * 结果码的中文描述
     */
    private final String message;

    /**
     * 构造方法，初始化结果码的数字值和中文描述。
     *
     * @param code    结果码的数字值
     * @param message 结果码的中文描述
     */
    ResultCodeEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
}
